package com.wzxy.nc.dao;

import java.io.Serializable;
import java.util.List;

/**
 * 数据库类基础接口
 * @author h
 *
 * @param <T>
 */
public interface IBaseDao<T> {
	
	/**
	 * 
	 * <p>Description: 新增一条数据</p>
	 * <p>Company: 梧州学院</p> 
	 * @author 胡宇鹏
	 * @date 2017年12月31日 下午4:44:06
	 * @param t
	 */
    T insert(T t);  
    
    /**
     * 
     * <p>Description: 根据Id删除一条数据</p>
     * <p>Company: 梧州学院</p> 
     * @author 胡宇鹏
     * @date 2017年12月31日 下午4:44:22
     * @param id
     */
    void delete(Serializable id);  
  
    /**
     * 
     * <p>Description: 更新一条数据</p>
     * <p>Company: 梧州学院</p> 
     * @author 胡宇鹏
     * @date 2017年12月31日 下午4:44:51
     * @param t
     */
    T update(T t);  
    
    /**
     * 
     * <p>Description: 通过Id查询一条数据</p>
     * <p>Company: 梧州学院</p> 
     * @author 胡宇鹏
     * @date 2017年12月31日 下午4:45:03
     * @param id
     * @return
     */
    T findById(Serializable id);
    
    /**
     * 
     * <p>Description: 通过hql语句查询数据</p>
     * <p>Company: 梧州学院</p> 
     * @author 胡宇鹏
     * @date 2017年12月31日 下午4:45:20
     * @param hql
     * @param args
     * @return
     */
    List<T> list(String hql, Object[] args);
    
    /**
     * 
     * <p>Description: 查询所有的数据</p>
     * <p>Company: 梧州学院</p> 
     * @author 胡宇鹏
     * @date 2017年12月31日 下午4:45:46
     * @return
     */
    List<T> findAll();
    
    /**
     * 
     * <p>Description: 通过sql语句查询数据</p>
     * <p>Company: 梧州学院</p> 
     * @author 胡宇鹏
     * @date 2017年12月31日 下午4:46:05
     * @param sql
     * @return
     */
    @SuppressWarnings("rawtypes")
	List findBySql(String sql);
       
       
}
